package com.yiyong.myabtis_genetion.domain.basic;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author  yiyong
 */
public class BaseEntity  implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 搜索值@JsonIgnore 注解来指定某些字段不参与序列化或反序列化操作。 */
    @JsonIgnore
    private String searchValue;

    /** 创建者 */
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 最后修改时间@JsonFormat 是 Jackson 库中的一个注解，用于指定在序列化和反序列化过程中如何格式化日期、时间等类型的字段。通过 @JsonFormat 注解，可以定义日期、时间等字段的输出格式，以便更好地控制 JSON 数据的展示形式。*/
    @JsonFormat(pattern = "yyy-mm-dd HH:mm:ss")
    private Date lastModified;

    /** 备注 */
    private String remark;

    /** 修改时间筛选-开始 */
    private Date startUpdateTime;

    /** 修改时间筛选-结束 */
    private Date endUpdateTime;

    /** 创建时间筛选-开始 */
    private Date startCreateTime;

    /** 创建时间筛选-结束 */
    private Date endCreateTime;

    /** 请求参数@JsonInclude 是 Jackson 库中的一个注解，用于控制在序列化过程中哪些字段应该包含在生成的 JSON 中。
     * Include.ALWAYS：始终包含字段，即使字段的值为 null。
     * Include.NON_NULL：只包含非空字段。
     * Include.NON_EMPTY：只包含非空且非空字符串的字段。
     * Include.NON_DEFAULT：只包含字段的值与默认值不同的字段。通过 @JsonInclude 注解，可以指定在序列化 Java 对象为 JSON 字符串时，哪些字段应该被包含，哪些字段应该被忽略。 */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private Map<String, Object> params;
    /** 分页页数 */
    private Integer pageNo;
    /** 分页长度 */
    private Integer pageSize;

    public Integer getPageNo() {
        return pageNo;
    }

    public void setPageNo(Integer pageNo) {
        this.pageNo = pageNo;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Date getStartUpdateTime() {
        return startUpdateTime;
    }

    public void setStartUpdateTime(Date startUpdateTime) {
        this.startUpdateTime = startUpdateTime;
    }

    public Date getEndUpdateTime() {
        return endUpdateTime;
    }

    public void setEndUpdateTime(Date endUpdateTime) {
        this.endUpdateTime = endUpdateTime;
    }

    public Date getStartCreateTime() {
        return startCreateTime;
    }

    public void setStartCreateTime(Date startCreateTime) {
        this.startCreateTime = startCreateTime;
    }

    public Date getEndCreateTime() {
        return endCreateTime;
    }

    public void setEndCreateTime(Date endCreateTime) {
        this.endCreateTime = endCreateTime;
    }

    public String getSearchValue()
    {
        return searchValue;
    }

    public void setSearchValue(String searchValue)
    {
        this.searchValue = searchValue;
    }

    public String getCreateBy()
    {
        return createBy;
    }

    public void setCreateBy(String createBy)
    {
        this.createBy = createBy;
    }

    public Date getCreateTime()
    {
        return createTime;
    }

    public void setCreateTime(Date createTime)
    {
        this.createTime = createTime;
    }

    public String getUpdateBy()
    {
        return updateBy;
    }

    public void setUpdateBy(String updateBy)
    {
        this.updateBy = updateBy;
    }

    public Date getUpdateTime()
    {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime)
    {
        this.updateTime = updateTime;
    }

    public String getRemark()
    {
        return remark;
    }

    public void setRemark(String remark)
    {
        this.remark = remark;
    }

    public Map<String, Object> getParams()
    {
        if (params == null)
        {
            params = new HashMap<>();
        }
        return params;
    }

    public Date getLastModified() {
        return lastModified;
    }

    public void setLastModified(Date lastModified) {
        this.lastModified = lastModified;
    }


    public void setParams(Map<String, Object> params)
    {
        this.params = params;
    }
}
